1
Kiến trúc nội bộ: Con trỏ klass và super
AI035Lesson 14
00:00

Ở cấp độ C, các đối tượng Ruby được biểu diễn bởi các cấu trúc tách biệt dữ liệu khỏi hành vi thông qua một cấu trúc phân cấp dựa trên con trỏ. Con trỏ klass liên kết một thể hiện với "lớp liên quan" của nó (nơi các phương thức được lưu trữ), trong khi con trỏ super liên kết các lớp với tổ tiên của chúng, tạo thành một bản đồ cấu trúc mà máy ảo Ruby sử dụng để giải quyết kế thừa.

1. Con trỏ klass và cờ

Mỗi đối tượng Ruby đều chứa một phần đầu với một klass con trỏ và một tập hợp bit cờ (bitmask) của cờ. Những cờ này xác định trạng thái nội bộ của đối tượng, ví dụ như đánh dấu các lớp ảo được tạo tự động bằng ký hiệu 'V' để xử lý việc gán phương thức đơn thể.

2. Tách biệt trạng thái (Hình 24.1)

Một thể hiện như lucille lưu trữ các biến thể hiện, nhưng nó không sở hữu bất kỳ phương thức nào riêng. Con trỏ klass sẽ hướng máy ảo đến bảng phương thức của đối tượng lớp Guitar lớp.

lucille@valueLớp: Guitarplay()strings()VLớp: Objectclone(), dup()klasssuper

3. Chuỗi kế thừa

Khi lucille.play() được gọi, Ruby sẽ theo dõi con trỏ klass Nếu phương thức không được tìm thấy trong Guitar, thì nó sẽ theo dõi con trỏ super để đến Object, từ đó có quyền truy cập vào clone hoặc dup.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>